package com.hsjk.szwj.module.smedia.api.production.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;

/**
 * 创建云剪辑工程 Request DTO
 */
@Data
public class CreateEditingProjectReqDTO {
    /**
     * 云剪辑工程标题
     */
    @JsonProperty("Title")
    @NotBlank(message = "云剪辑工程标题不能为空")
    private String title;

    /**
     * 云剪辑工程描述
     */
    @JsonProperty("Description")
    private String description;

    /**
     * 云剪辑工程时间线，Json格式
     */
    @JsonProperty("Timeline")
    private String timeline;

    /**
     * 云剪辑工程封面。如果为空且时间线上的video轨已经存在素材，则默认选取时间线上第一个素材封面。
     */
    @JsonProperty("CoverURL")
    private String coverURL;

    /**
     * 模板Id，用于快速低门槛的构建时间线。注：ProjectId、Timeline、TemplateId有且只有一个非空。当TemplateId不为空时，ClipsParam不能为空。
     */
    @JsonProperty("TemplateId")
    private String templateId;

    /**
     * 模板对应的素材参数，Json格式，当TemplateId不为空时，ClipsParam不能为空。具体格式见 普通模板创建及使用、高级模板创建及使用。
     */
    @JsonProperty("ClipsParam")
    private String clipsParam;

    /**
     * 模板类型，创建基于模板的云剪辑工程需要填写，默认值：Timeline。 取值范围：
     *
     * Timeline 普通模板
     * VETemplate 高级模板
     */
    @JsonProperty("TemplateType")
    private String templateType;

    /**
     * 工程关联素材，多个素材以逗号（,）分隔；每种类型最多支持10个素材ID.
     */
    @JsonProperty("MaterialMaps")
    private String materialMaps;

    /**
     * 工程业务配置。一般剪辑工程可忽略。
     *
     * 如果是直播剪辑工程OutputMediaConfig.StorageLocation 必填, OutputMediaConfig.Path 不填默认合成的直播片段存储在根路径下
     *
     * OutputMediaTarget 可选填vod-media/oss-object, 不填默认oss-object
     *
     * OutputMediaTarget 为vod-media 时，Path不生效。
     */
    @JsonProperty("BusinessConfig")
    private String businessConfig;

    /**
     * 剪辑工程类型，EditingProject: 普通剪辑工程；LiveEditingProject: 直播剪辑工程
     */
    @JsonProperty("ProjectType")
    private String projectType;
}
